/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Modelo.PersistenciaJDBC;

import Modelo.Entidades.Alumno;
import Modelo.Entidades.AlumnoImpl;
import Modelo.Entidades.Anuncio;
import Modelo.Entidades.AnuncioImpl;
import Modelo.Persistencia.AnuncioDAO;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/*
 *  Proyecto eJAM [G12]
 *  Miembros:
 *      - Javier Ruiz Hidalgo
 *      - Adrian Ramos Cápitas
 *      - Miguel Alejandro Esteban Ordóñez
 */

public class AnuncioDAOJDBC implements AnuncioDAO{

    public void create(Anuncio entidad) {
        String sql = "INSERT INTO ANUNCIO(IS_LEIDO,DESCRIPCION,DNI) VALUES (?,?,?)";
        List<Alumno> alumnos = new UsuarioDAOJDBC().listarAlumnos();

        try{
            //Introducción de Informacion en la Tabla ANUNCIO
            for(Alumno a: alumnos){
                PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
                stm.setBoolean(1, entidad.isLeido());
                stm.setString(2, entidad.getDescripcion());
                stm.setString(3, a.getDNI());
                stm.execute();
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public Anuncio read(String pk) {
        //Metodo no contemplado
        return null;
    }

    public void update(Anuncio entidad) {
        //Metodo no contemplado
    }

    public void delete(Anuncio entidad) {
        //Metodo no contemplado
    }

    public List<Anuncio> list() {
        //Metodo no contemplado
        return null;
    }

    public List<Anuncio> listByDNI(String DNI) {
        List<Anuncio> anuncios = new ArrayList<Anuncio>();
        Anuncio anuncio = null;
        try{
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM ANUNCIO WHERE DNI = '" +DNI+ "'");
            String descripcion,dni;
            boolean leido;
            int id;
            while(res.next()){
                leido = res.getBoolean("IS_LEIDO");
                descripcion = res.getString("DESCRIPCION");
                dni = res.getString("DNI");
                id = res.getInt("ID");
                anuncio = new AnuncioImpl(id, leido, descripcion, new AlumnoImpl(dni));
                anuncios.add(anuncio);
            }

            for(Anuncio a: anuncios){
                a.setAlumno((Alumno)new UsuarioDAOJDBC().read(a.getAlumno().getDNI()));
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return anuncios;
    }

    public void marcarComoLeido(Anuncio anuncio) {
         String sql = "UPDATE ANUNCIO SET IS_LEIDO=? WHERE ID LIKE " +anuncio.getID();
        try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setBoolean(1, true);
            stm.executeUpdate();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }
}
